﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using LuaInterface;
using ElementumForever.Interfaces;
using Microsoft.Xna.Framework.Graphics;

namespace ElementumForever.Interfaces
{
    public interface IEntity : IUpdateHandler, IDisposable, IEntityProperty
    {
        void OnCreat();
        Matrix Projection { get; }
        Matrix Unprojection { get; }
        IEntity Parent { get; }
        void OnAttach(IEntity parent);
        void OnDetach();
        void AttachChild(IEntity child);
        void DetachChild(IEntity child);
        void SortChildren();
        EntityList Children { get; }
        bool MechClass(string _class);
        IEntity Clone();
        BaseEntity PickChildren(Vector2 touch);
        void OnDraw(GameTime gameTime, SpriteBatch spriteBatch);
        EntityInfo Serialize();
        void Build(IsceneBuilder builder, LuaTable define);
    }
}
